/*
 * @lc app=leetcode.cn id=43 lang=javascript
 *
 * [43] 字符串相乘
 */

// @lc code=start
/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
// var multiply = function(num1, num2) {
//   if(num1 == '0' || num2 == '0') return "0";
//   let arr = [];
//   for(let i = num1.length - 1; i >= 0; i--){
//     for(let j = num2.length - 1; j >= 0; j--){
//       arr[i + j] = arr[i + j] || 0;
//       arr[i + j] += num1[i] * num2[j];
//     }
//   }

//   arr.unshift(0);
//   for(let i = arr.length - 1; i >=0; i--){
//     if (arr[i] < 10) continue;
//     arr[i - 1] += (arr[i] / 10) | 0;
//     arr[i] %= 10;
//   }
//   while (arr[0] == 0) {
//     arr.shift(); 
//   }
//   return arr.join('')
// }; 

/**
 * 复习 2021-08-04
 */
var multiply = function(num1, num2) {
  if(num1 === '0' || num2 === '0') return '0';
  let retArr = [];
  for (let i = 0; i < num1.length; i++) {
    for (let j = 0; j < num2.length; j++) {
      retArr[i + j] = (retArr[i + j] || 0) + num1[i] * num2[j];
    }
  }

  let ret = '', pre = 0;
  for (let i = retArr.length - 1; i >= 0; i--) {
    let cur = retArr[i] + pre;
    pre = (cur / 10) | 0;
    ret = (cur % 10) + ret;
  }
  return pre ? pre + ret : ret;
}
// @lc code=end

